package com.higgins.eventtracking.client;

import java.util.Date;
import java.util.List;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.higgins.eventtracking.client.dto.AssetDTO;
import com.higgins.eventtracking.client.dto.FinanceGoalDTO;

/**
 * The async counterpart of <code>GreetingService</code>.
 */
public interface AssetTrackingServiceAsync {
	void retrieveAssets(AsyncCallback<List<AssetDTO>> callback) throws IllegalArgumentException;
	void addAsset(String amount, String account, AsyncCallback<String> callback) throws IllegalArgumentException;
	void addAsset(String amount, String account, String accountRepayment, String monthlyRepayment, String monthlyInterest, AsyncCallback<String> callback) throws IllegalArgumentException;
	void retrieveTotalAssetAmount(AsyncCallback<String> callback) throws IllegalArgumentException;
	void retrieveForecastedEndOfNextQuarterTotalAssets(Boolean employed, Date now, AsyncCallback<String> callback) throws IllegalArgumentException;
	void retrieveForecastedTotalAssets(Boolean employed, Date now, Date forecastDate, AsyncCallback<String> callback) throws IllegalArgumentException;
	//	void retrieveForecastedUnemployedEndOfNextQuarterTotalAssets(Date now, AsyncCallback<String> callback) throws IllegalArgumentException;
	void retrieveEndOfNextQuarter(Date now, AsyncCallback<String> callback) throws IllegalArgumentException;
	void retrieveGoals(AsyncCallback<List<FinanceGoalDTO>> callback) throws IllegalArgumentException;
	void insertGoals(AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void updateAsset(AssetDTO dto, AsyncCallback<String> callback) throws IllegalArgumentException;	
	void deleteAsset(Long id, AsyncCallback<String> callback) throws IllegalArgumentException;

}
